﻿Imports Commander_Wars.Spieletools
''' <summary>
''' Sorgt fuer die Uebersetzung der Texte
''' </summary>
''' <remarks></remarks>
Public Class Sprachconverter
    Structure Wort
        Dim Deutsch As String
        Dim Uebersetzung As String
        Public Sub New(ByVal Deutsch As String, ByVal Uebersetzung As String)
            Me.Deutsch = Deutsch
            Me.Uebersetzung = Uebersetzung
        End Sub
    End Structure
    Private Shared Uebersetzungen1() As Wort = {}
    Private Shared Uebersetzungen2() As Wort = {}
    Private Shared Uebersetzungen3() As Wort = {}
    Private Shared LadeTexte() As String = {}
    Public Shared Sub LoadLanguage()
        ReDim LadeTexte(-1)
        ReDim Uebersetzungen1(-1)
        ReDim Uebersetzungen2(-1)
        ReDim Uebersetzungen3(-1)
        Tooltips.Clear()
        ToolTipIDs.Clear()
        Dim Sprache As Sprachen = DataSettings.Sprache
        If My.Computer.FileSystem.FileExists(DataSettings.Resourcenpfad + "Language\" + Sprache.ToString + "\" + Sprache.ToString + ".lng") Then
            Dim strR As New IO.StreamReader(DataSettings.Resourcenpfad + "Language\" + Sprache.ToString + "\" + Sprache.ToString + ".lng", Hauptmenue.Codierung)
            While Not strR.EndOfStream
                Dim Z As String = strR.ReadLine
                If Not Z.StartsWith("//") Then
                    If Z.Contains("=") Then
                        Dim Z2() As String = Z.Split("=")
                        If Uebersetzungen1.Length < 200 Then
                            Array.Resize(Uebersetzungen1, Uebersetzungen1.Length + 1)
                            Uebersetzungen1(Uebersetzungen1.Length - 1) = New Wort(Z2(0), Z2(1))
                        ElseIf Uebersetzungen2.Length < 200 Then
                            Array.Resize(Uebersetzungen2, Uebersetzungen2.Length + 1)
                            Uebersetzungen2(Uebersetzungen2.Length - 1) = New Wort(Z2(0), Z2(1))
                        Else
                            Array.Resize(Uebersetzungen3, Uebersetzungen3.Length + 1)
                            Uebersetzungen3(Uebersetzungen3.Length - 1) = New Wort(Z2(0), Z2(1))
                        End If
                    End If
                End If
            End While
        End If
        If My.Computer.FileSystem.FileExists(DataSettings.Resourcenpfad + "Language\" + Sprache.ToString + "\Ladetexte.txt") Then
            Using strR As New IO.StreamReader(DataSettings.Resourcenpfad + "Language\" + Sprache.ToString + "\Ladetexte.txt", Hauptmenue.Codierung)
                While Not strR.EndOfStream
                    Dim Z As String = strR.ReadLine
                    Array.Resize(LadeTexte, LadeTexte.Length + 1)
                    LadeTexte(LadeTexte.Length - 1) = Z.Replace("|", Environment.NewLine)
                End While
            End Using
        End If
        If My.Computer.FileSystem.FileExists(DataSettings.Resourcenpfad + "Language\" + Sprache.ToString + "\ToolTips.txt") Then
            Dim strR As New IO.StreamReader(DataSettings.Resourcenpfad + "Language\" + Sprache.ToString + "\ToolTips.txt", Hauptmenue.Codierung)
            While Not strR.EndOfStream
                Dim Z As String = strR.ReadLine
                If Not Z.StartsWith("//") Then
                    If Z.Contains("=") Then
                        Dim Z2() As String = Z.Split("=")
                        Tooltips.Add(Z2(1))
                        ToolTipIDs.Add(Z2(0))
                    End If
                End If
            End While
        End If
    End Sub
    Public Shared Function Translate(ByVal Wort As String) As String
        Dim WKlein = Wort.ToLower
        For I = 0 To Uebersetzungen1.Length - 1
            If Uebersetzungen1(I).Deutsch.ToLower = WKlein Then
                Return Uebersetzungen1(I).Uebersetzung
            End If
        Next
        For I = 0 To Uebersetzungen2.Length - 1
            If Uebersetzungen2(I).Deutsch.ToLower = WKlein Then
                Return Uebersetzungen2(I).Uebersetzung
            End If
        Next
        For I = 0 To Uebersetzungen3.Length - 1
            If Uebersetzungen3(I).Deutsch.ToLower = WKlein Then
                Return Uebersetzungen3(I).Uebersetzung
            End If
        Next
        Return Wort
    End Function
    Public Shared Function TranslateIntoGerman(ByVal Wort As String) As String
        Dim WKlein = Wort.ToLower
        For I = 0 To Uebersetzungen1.Length - 1
            If Uebersetzungen1(I).Uebersetzung.ToLower = WKlein Then
                Return Uebersetzungen1(I).Deutsch
            End If
        Next
        For I = 0 To Uebersetzungen2.Length - 1
            If Uebersetzungen2(I).Uebersetzung.ToLower = WKlein Then
                Return Uebersetzungen2(I).Deutsch
            End If
        Next
        For I = 0 To Uebersetzungen3.Length - 1
            If Uebersetzungen3(I).Uebersetzung.ToLower = WKlein Then
                Return Uebersetzungen3(I).Deutsch
            End If
        Next
        Return Wort
    End Function
    Public Shared Function GetRandomLadetext() As String
        If Objektverwalter.Spielfeld IsNot Nothing Then
            Dim desc As String = Objektverwalter.Spielfeld.Beschreibung.Trim.Replace("|", Environment.NewLine)
            If desc = "" Or desc = "Keine Beschreibung vorhanden." Then Return LadeTexte(Zufallszahl(0, LadeTexte.Length - 1)) Else Return desc
        Else
            Return LadeTexte(Zufallszahl(0, LadeTexte.Length - 1))
        End If
    End Function

    Private Shared Tooltips As New List(Of String)
    Private Shared ToolTipIDs As New List(Of String)
    Public Shared Function GetToolTip(ByVal ID As String) As String
        For I = 0 To ToolTipIDs.Count - 1
            If ToolTipIDs(I).ToLower.Split(";").Contains(ID.ToLower) Then
                Return Tooltips(I)
            End If
        Next
        Return ""
    End Function
    Public Shared Function GetToolTip(ByVal ID As Integer) As String
        Return Tooltips(ID)
    End Function
End Class
